package jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class JDBCDemo10 {
    public static void main(String[] args) {
        try (Connection connection = DBUtil.getConnection();){

            //// 关闭自动提交模式
            //当调用 connection.setAutoCommit(false); 时，自动提交模式就会被关闭，进入手动提交模式
            connection.setAutoCommit(false);

            //从 user 表中删除指定 id 的记录。
            // ? 是占位符，在使用 PreparedStatement 执行这条 SQL 语句时，需要为这个占位符设置具体的值。
            String sql = "DELETE FROM user WHERE id=?";

         //PreparedStatement 预编译 SQL 语句，从而提高执行效率，并且可以有效防止 SQL 注入攻击。
            PreparedStatement ps = connection.prepareStatement(sql);

            //为 PreparedStatement 对象中 SQL 语句的占位符设置具体的值。setInt 方法用于设置整数类型的值。
            //1 表示占位符的索引，索引从 1 开始计数；2 是要设置的具体值。也就是说，它把 SQL 语句中第一个占位符 ? 替换成整数 2。
            ps.setInt(1,2);

           //执行预编译的 SQL 语句。executeUpdate() 方法主要用于执行 INSERT、UPDATE、DELETE 等 SQL 语句。
            int num=ps.executeUpdate();

            System.out.println(num>0?"删除成功":"删除失败");

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

